package com.zapi.ai.model;

import lombok.Data;
import java.util.List;

/**
 * API元数据模型
 */
@Data
public class ApiMetadata {
    /** API路径 */
    private String path;
    
    /** HTTP方法 */
    private String method;
    
    /** API名称/操作描述 */
    private String operation;
    
    /** API所属模块 */
    private String module;
    
    /** 参数列表 */
    private List<ApiParameter> parameters;
    
    /** 请求体类型 */
    private String requestBodyType;
    
    /** 返回值类型 */
    private String responseType;
    
    /** 是否需要认证 */
    private boolean requireAuth = true;
    
    /** API描述 */
    private String description;
    
    /**
     * 生成AI可理解的函数描述
     */
    public String toFunctionDescription() {
        StringBuilder sb = new StringBuilder();
        sb.append(operation).append("\n");
        sb.append("路径: ").append(method).append(" ").append(path).append("\n");
        
        if (parameters != null && !parameters.isEmpty()) {
            sb.append("参数:\n");
            for (ApiParameter param : parameters) {
                sb.append("  - ").append(param.getName())
                  .append(" (").append(param.getType()).append(")")
                  .append(param.isRequired() ? " [必填]" : " [可选]");
                if (param.getDescription() != null) {
                    sb.append(": ").append(param.getDescription());
                }
                sb.append("\n");
            }
        }
        
        if (requestBodyType != null) {
            sb.append("请求体: ").append(requestBodyType).append("\n");
        }
        
        return sb.toString();
    }
    
    @Data
    public static class ApiParameter {
        /** 参数名 */
        private String name;
        
        /** 参数类型 */
        private String type;
        
        /** 参数位置 (query/path/body) */
        private String location;
        
        /** 是否必填 */
        private boolean required;
        
        /** 参数描述 */
        private String description;
        
        /** 默认值 */
        private String defaultValue;
    }
}

